package com.fly.service;

import com.fly.bean.Role;
import com.fly.util.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface RoleService {
    /**
     *  查询角色数量
     * @return
     */
    Integer selectRoleNumber();

    /**
     * 获取所有的角色信息分页显示
     * @return
     */
    List<Role> getAllRole(Page page);

    /**
     * 根据模糊查询角色名称和启用状态得到角色信息的数量
     * @param roleName
     * @param sysProValueName
     * @return
     */
    Integer selectRoleNumberByFuzzyQuery(String roleName, String sysProValueName);


    /**
     * 根据模糊查询和启用转台进行模糊查询分页显示
     * @param page
     * @param roleName
     * @param sysProValueName
     * @return
     */
    List<Role> selectRoleByRoleNameOrSysProValueName(Page page,String roleName,String sysProValueName);

    /**
     * 查询role表中所有的角色编号信息，判断前端传来的roleNo是否已存在
     * @return
     * roleNo
     */
    String selectRoleNo(String roleNo);

    /**
     * 查询role表中所有的角色名称信息，判断前端传来的roleName是否已存在
     * @return
     */
    String selectRoleName(String roleName);

    /**
     * 根据sysProId和sysProValueName得到id就是得到roleState
     * @param sysProValueName
     * @return
     */
    Integer selectRoleStateBySysProIdAndSysProValueName(String sysProValueName);

    /**
     * 修改角色的状态信息
     * @param roleState
     * @return
     */
//    Integer modifyRoleState(Integer roleState);

    /**
     * 修改角色表的角色编号，角色名称和状态信息，只有超级管理员才有权限修改
     * @param role
     * @return
     */
    Integer modifyRoleNoAndRoleName(Role role);

    /**
     * 根据角色Id查询角色名称
     * @param roleId
     * @return
     */
    String selectRoleNameByRoleId(Integer roleId);

    /**
     * 根据角色ID删除角色信息
     * @param roleId
     * @return
     */
    Integer deleteRole(Integer roleId);

    /**
     * 根据角色状态配置查询sysProId用于添加角色使用
     * @param sysProName
     * @return
     */
    Integer selectSysProIdBySysProName(String sysProName);

    /**
     * 根据添加的角色状态给其查找出相对应的id赋值给roleState
     * @param sysProValueName
     * @param sysProId
     * @return
     */
    Integer selectIdBySysProValueNameAndSysProId(@Param("sysProValueName") String sysProValueName, @Param("sysProId") Integer sysProId);

    /**
     * 添加角色信息
     * @param roleNo
     * @param roleName
     * @param userId
     * @param roleState
     * @param sysProId
     * @return
     */
    Integer addRole(String roleNo,String roleName,Integer userId,Integer roleState,Integer sysProId);

    /**
     * 通过角色Id查找角色编号
     * @param roleId
     * @return
     */
    String selectRoleNoByRoleId(Integer roleId);
}
